package cl.tinet.reservaCD.reserva;

import java.util.ArrayList;

import cl.tinet.reservaCD.modelo.Reserva;
import cl.tinet.reservaCD.modelo.Usuario;

/**
 * 
 * Clase interface de reservaDao, que va ser implementada por ReservaDaoImpl.
 * 
 * @author Carlos Duque.
 */
public interface ReservaDao {

    /**
     * Metodo crear un nuevo usuario en la base de datos.
     * 
     * @param reservaCrear
     *            nuevo usuario en la base de datos.
     */
    void crearReserva(Reserva reservaCrear);

    /**
     * Metodo que lista las reservas que estan en la base de datos.
     * 
     * @return un lista de reserva encontrados.
     */
    ArrayList<Reserva> listaReserva();

    /**
     * Metodo que lista las reservas que estan en la base de datos.
     * 
     * @param usuarioBucarListar
     *            fk nombre del usuario.
     * @return un lista de reserva encontrados.
     */
    ArrayList<Reserva> listaReservaUsuaio(Usuario usuarioBucarListar);

    /**
     * Metodo eliminar Reserva en la base de datos.
     * 
     * @param reservaEliminar
     *            reserva que se va a eliminar en la base de datos.
     */
    void eliminarReserva(Reserva reservaEliminar);

    /**
     * Metodo que busca una reserva en la base de datos.
     * 
     * @param reservaBusqueda
     *            reserva a buscar en la base de datos.
     * @return reserva encontrado en la base de datos
     */
    Reserva buscarReservaId(Reserva reservaBusqueda);

}
